Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αντικατάσταση του ^ με * στην VC++

Îåêßíçóå áðü ôï ìÝëïò pontifikas. Τελευταία δημοσίευση από το μέλος pontifikas στις 30-06-2009, 15:04. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-06-2009, 11:48 52074

    Αντικατάσταση του ^ με * στην VC++

    Είμαι σίγουρος ότι έχει ξαναειπωθεί αλλά αδυνατώ να βρώ τρόπο να το αναζητήσω είτε εδώ είτε στο google εξαιτίας των συμβόλων.
    Αποφάσισα να ξεκινήσω να γράφω C++ οπότε η πρώτη λογική απορία είναι:είναι δυνατό με κάποιο τρόπο να αντικαταστήσω το ^ με το μισητό αλλά οικείο *?

    Ευχαριστώ
  •  30-06-2009, 12:55 52078 σε απάντηση της 52074

    Απ: Αντικατάσταση του ^ με * στην VC++

    Αναφέρεσαι στον XOR operator (λέω μήπως) ή στον managed pointer - handle (C++/CLI);

    Δε νομίζω ότι μπορείς να χρησιμοποιήσεις managed objects με native pointers.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  30-06-2009, 14:23 52082 σε απάντηση της 52074

    Απ: Αντικατάσταση του ^ με * στην VC++

    Προφανώς αναφέρεται στα handles της C++/CLI.Εν ολίγοις ένα handle είναι μια αναφορά σε ένα managed αντικείμενο,διαχειριζόμενο από το .NET και τον garbage collector.Ένα παράδειγμα:

    System::Timer::Timers ^mytimer=gcnew System::Timers::Timer();
    mytimer->Start();
    (btw θα έπρεπε να υπάρχει syntax highlighting και για την C++/CLI στο site)
    έχει λοιπόν μια σύνταξη ανάλογη με τον pointer των unmanaged αντικειμένων.Σε πολλές άλλες γλώσσες δεν υπάρχει σαφής διαχωρισμός στην σύνταξη μεταξύ value και reference objects 
    (C#,VB.NET κ.α) όμως σε μια γλώσσα που κυριαρχείται από τους δείκτες μια τέτοια διάκριση είναι απαραίτητη.Και για να υπάρχει επίσης διάκριση ανάμεσα στους pointers και τις managed 
    references που διαφέρουν ριζικά (pointer arithmetics σε managed references δεν γίνονται π.χ) φτιάχτηκαν τα handles.
    Αυτό που είδες δηλαδή ΔΕΝ είναι Standard C++,αλλά C++/CLI,ένα υπερσύνολο της ISO C++ με managed extensions που αποτελεί το πρότυπο ECMA 372.Χαρακτηριστικό της γλώσσας αυτής 
    είναι η εξαιρετική άνεση την οποία προσφέρει και στα πιο δύσκολα interop σενάρια,αλλά επίσης χαρακτηριστικό είναι η μεγάλη έλλειψη υποστήριξης της από τη Microsoft (στην οποία 
    προφανώς δεν αρέσουν τα mixed code assemblies).
    Αφού ξεκαθαρίστηκε (ελπίζω) το θέμα να σου αναφέρω ότι με το compiler switch /clr:oldsyntax (στο Common Language Runtime support των properties) μπορείς να επιστρέψεις στην
    Managed C++,τον προκάτοχο της C++/CLI  για .NET programming που όμως δεν συνίσταται καθόλου,έχει πάρα πολλά προβλήματα στην σύνταξη αλλά δεν κάνει σαφή διαχωρισμό μεταξύ 
    pointers και unmanaged references.Το παραπάνω παράδειγμα θα ήταν:
    System::Timer::Timers *mytimer=new System::Timers::Timer();
    mytimer->Start();
  •  30-06-2009, 15:04 52090 σε απάντηση της 52082

    Απ: Αντικατάσταση του ^ με * στην VC++

    Ευχαριστώ darklynx. Ήταν διευκρινιστικό το post σου.
    Είναι η πρώτη φορά που πάω να γράψω C++ σε .NET και γενικότερα είμαι νέος στην C++  οπότε απλά υπέθεσα ότι η MS για κάποιον δικό της λόγο είχε αντικαταστήσει το * με το ^.

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems